// import sqlite3 from 'sqlite3'
// import sqlite3 from '@journeyapps/sqlcipher'
import fs from 'fs'
// import { remote } from 'electron'
// import path from 'path'
import config from './config'

export default {
  initDBFile (filePath) {
    return new Promise((resolve, reject) => {
      try {
        // 源文件路径
        let sourcePath = config.SYSTEM.DBFileName
        if (!fs.existsSync(sourcePath)) {
          throw new Error('数据库模板文件不存在')
        }

        // 读取源文件
        let rs = fs.createReadStream(sourcePath)
        // 写入目标文件
        let ws = fs.createWriteStream(filePath)
        ws.on('finish', () => { resolve() })
        rs.pipe(ws)
      } catch (error) {
        reject(error)
      }
    })
  },
  // 执行增、删、改SQL语句
  // async exec (param, isDispose = false) {
  //   // 初始化数据库链接
  //   let db = null
  //   try {
  //     db = await open()
  //     if (!db) throw new Error('创建数据库链接对象失败')
  //   } catch (error) {
  //     throw error
  //   }
  //   let err = null
  //   try {
  //     let excuteSqls = []
  //     if (typeof param === 'string') {
  //       excuteSqls.push({ sql: param })
  //     } else if (Array.isArray(param)) {
  //       excuteSqls = excuteSqls.concat(param)
  //     } else if (typeof param === 'object') {
  //       excuteSqls.push(param)
  //     } else {
  //       throw new Error('执行出错：参数格式错误')
  //     }
  //
  //     db.run('BEGIN TRANSACTION')
  //     for (let i = 0; i < excuteSqls.length; i++) {
  //       let sql = excuteSqls[i].sql ? excuteSqls[i].sql : excuteSqls[i]
  //       let parameter = excuteSqls[i].parameter ? excuteSqls[i].parameter : []
  //       await run(db, sql, parameter)
  //     }
  //     db.run('COMMIT TRANSACTION')
  //     if (isDispose) db.run('VACUUM')
  //   } catch (error) {
  //     db.run('ROLLBACK TRANSACTION')
  //     err = error
  //   } finally {
  //     try {
  //       await close(db)
  //     } catch (error) {
  //       err = err || error
  //     }
  //   }
  //   if (err) {
  //     throw err
  //   }
  //   return true
  // },
  // 获取第一条数据
  // get (param) {
  //   return new Promise((resolve, reject) => {
  //     // 初始化数据库链接
  //     open().then(db => {
  //       try {
  //         if (typeof param === 'string') {
  //           param = { sql: param }
  //         }
  //
  //         db.get(param.sql, param.parameter ? param.parameter : [],
  //           (err, row) => {
  //             if (err) {
  //               reject(new Error(err))
  //             } else {
  //               resolve(row)
  //             }
  //           })
  //         db.close()
  //       } catch (error) { reject(error) }
  //     }).catch(error => {
  //       reject(error)
  //     })
  //   })
  // },
  // 获取全部数据
  // all (param) {
  //   return new Promise((resolve, reject) => {
  //     // 初始化数据库链接
  //     open().then(db => {
  //       try {
  //         if (typeof param === 'string') {
  //           param = { sql: param }
  //         }
  //         db.all(param.sql, param.parameter ? param.parameter : [],
  //           (err, rows) => {
  //             if (err) {
  //               reject(new Error(err))
  //             } else {
  //               resolve(rows)
  //             }
  //           })
  //         db.close()
  //       } catch (err) { reject(err) }
  //     }).catch(err => { reject(err) })
  //   })
  // },
  // 根据对象属性生成inset语句
  ObjectInsert (obj) {
    let tableName = obj.tableName
    let data = obj.data
    let fields = ''
    let values = ''
    for (let i in data) {
      if (i === 'TableName') {
        continue
      }
      fields += `,${i}`
      values += `,"${data[i] ? data[i].replace(/(")/g, "'") : ''}"`
    }
    fields = fields.substring(1)
    values = values.substring(1)
    let sql = `insert into ${tableName}(${fields}) values(${values});`
    return sql
  }
}

// 初始化数据库链接
// function open () {
//   return new Promise((resolve, reject) => {
//     try {
//       let caseDbpath = remote.getGlobal('casePath').path
//
//       if (!caseDbpath) {
//         throw new Error('创建数据库链接失败，文件路径不存在')
//       }
//       // 创建数据库链接
//       // let db = new sqlite3.Database(caseDbpath, sqlite3.OPEN_READWRITE, err => {
//         if (err) {
//           reject(new Error(err))
//         }
//         // resolve(db)
//       })
//     } catch (err) {
//       reject(err)
//     }
//   })
// }

// function run (db, sql, parameter) {
//   return new Promise((resolve, reject) => {
//     if (!db) reject(new Error('执行失败：数据库链接对象不存在'))
//     db.run(sql, parameter, err => {
//       if (err) {
//         reject(new Error(err))
//       } else {
//         resolve(true)
//       }
//     })
//   })
// }
// function close (db) {
//   new Promise((resolve, reject) => {
//     if (!db) reject(new Error('关闭链接失败：数据库链接对象不存在'))
//     db.close(err => {
//       if (err) {
//         reject(err)
//       } else {
//         resolve(true)
//       }
//     })
//   })
// }
